package com.example.librarymanagement.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.librarymanagement.dto.user.UserListDto;
import com.example.librarymanagement.entity.User;
import com.example.librarymanagement.vo.UserVo;

/**
 * @author ZHB
 */

public interface IUserService extends IService<User> {

    /**
     * 根据id或username获取用户分页对象
     *
     * @param userListDto id或username和分页参数
     * @return UserVo组成的分页对象
     */
    IPage<UserVo> getUserList(UserListDto userListDto);

    /**
     * 根据用户名获取用户对象
     *
     * @param username 用户名
     * @return 用户对象
     */
    User getUserByUsername(String username);

    /**
     * 获取该用户id的权限和角色组成的字符串
     *
     * @param id 用户id
     * @return 特定类型的字符串
     */
    String getUserAuthorityInfo(Integer id);

    /**
     * 根据用户名删除redis缓存权限
     *
     * @param username 用户名
     */
    void clearUserAuthorityInfo(String username);

    /**
     * 根据角色id删除拥有该角色的用户redis缓存权限
     *
     * @param roleId 角色id
     */
    void clearUserAuthorityInfoByRoleId(Integer roleId);

    /**
     * 根据菜单id删除拥有该菜单权限用户的redis缓存权限
     *
     * @param menuId 菜单id
     */
    void clearUserAuthorityInfoByMenuId(Integer menuId);

}
